<?php

namespace App\Admin\Controllers;

use App\Admin\Repositories\TongGood;
use App\Models\TongGoodsCate;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
use Dcat\Admin\Support\JavaScript;

class TongGoodController extends AdminController
{
    /**
     * Make a grid builder.
     *
     * @return Grid
     */
    protected function grid()
    {

        return Grid::make(new \App\Models\TongGood(), function (Grid $grid) {
            $grid->column('goods_img','商品信息')->view('admin.goods.fields.goods_info')->setAttributes(['style' => 'font-size:14px','width'=>'420px']);
            $grid->column('price')->display(function ($price){
                return $price.'元';
            });
            $grid->column('line_price')->display(function ($line_price){
                return $line_price.'元';
            });
            $grid->column('buy_order_info','商品购买身份')->display(function($buy_order_info){
                return explode(',',$buy_order_info);
            })->view('admin.goods.fields.buy_order_info');
            $grid->column('goods_status','上架')->switch();
            $grid->column('created_at');
            $grid->column('updated_at')->sortable();

//            $grid->disableDeleteButton();
//            $grid->disableEditButton();
//            $grid->disableQuickEditButton();
            //$grid->disableViewButton();
            //去除掉操作栏
            //$grid->showActions(false);

            $grid->actions(function (Grid\Displayers\Actions $actions) {
                $actions->disableDelete();
                //$actions->disableEdit();
                $actions->disableQuickEdit();
                $actions->disableView();
            });

            $grid->filter(function (Grid\Filter $filter) {
                $filter->panel();
                $filter->equal('id')->placeholder('请输入商品id')->width(3);
                $filter->like('goods_name', '名称')->placeholder('请输入商品名称')->width(3);
                $filter->equal('goods_status','上架状态')->select([0=>'下架',1=>'上架'])->placeholder('请选择商品上下架')->width(3);
                $filter->equal('is_shop_goods','商品状态')->select([0=>'会员',1=>'普通'])->placeholder('请选择商品状态')->width(3);
            });

            $grid->toolsWithOutline(false);
            //$grid->disableFilter();
            // 禁用分页
            $grid->disablePagination();
            //$grid->showBatchActions(false);
            // 也可以这样
            //禁用复选框
            $grid->disableRowSelector();

        });


    }

    /**
     * Make a show builder.
     *
     * @param mixed $id
     *
     * @return Show
     */
    protected function detail($id)
    {
        return Show::make($id, new TongGood(), function (Show $show) {
            $show->field('id');
            $show->field('goods_name');
            $show->field('goods_img');
            $show->field('price');
            $show->field('line_price');
            $show->field('content');
            $show->field('buy_order_info');
            $show->field('experience_member_price');
            $show->field('brand_member_price');
            $show->field('store_price');
            $show->field('company_price');
            $show->field('partner_price');
            $show->field('goods_status');
            $show->field('created_at');
            $show->field('updated_at');
        });
    }

    /**
     * Make a form builder.
     *
     * @return Form
     */
    protected function form()
    {
        return Form::make(new \App\Models\TongGood(), function (Form $form) {

            $form->column(6, function (Form $form) {

                $form->radio('goods_status','上架')->options([0 => '下架', 1=> '上架'])->default(0);
                $form->radio('is_shop_goods','类型')->options([0 => '新单', 1=> '普通商品',2=>'复购'])->when([0, 2],function(Form $form){
                    $form->checkbox('buy_order_info','购买身份：')->help('商品购买身份的显示仅针对会会员商品和会员专享商品')
                        ->options(config('user.identity'))->default([3,4,5])
                        ->saving(function ($value) {
                            // 转化成json字符串保存到数据库
                            //return 'eqrre';
                            return implode(',', $value);
                            //return json_encode($value);
                        })->canCheckAll();
                })->default(0);
                $form->radio('goods_area','专区')->options([1=>'会员注册专区',2=>'复购专区',3=>'提货券专区',4=>'普通商品专区'])->default('4');
                //获取商品分类
                $cate_list = TongGoodsCate::query()->select('id','cate_name as text')->get()->toArray();
                $new_cate_list = [];
                foreach ($cate_list as $k=>$v){
                    $new_cate_list[$v['id']]=$v['text'];
                }
                $form->select('cate_id','商品分类')->options($new_cate_list)->rules('required_if:is_shop_goods,1',['cate_id.required'=>'请选择商品分类']); // 显示 * 号->placeholder('请选择商品分类');
                $form->text('goods_name')->rules('required', [
                    'required' => '请输入商品名称',
                ]);

                $form->currency('price',' 售价：')->rules('required', [
                    'required' => '请输入商品售价',
                ]);
                $form->currency('line_price','划线价：')->rules('required', [
                    'required' => '请输入商品划线价',
                ]);
                $form->currency('experience_member_price','会员价格：')->rules('required', [
                    'required' => '请输入商品会员价',
                ])->help('选择普通商品类型或不允许复购的商品价格设置成为一样就行，如果是会员专享涉及到复购津贴奖励 就要填写会员价格，并且要比商品售价低');
                $form->currency('brand_member_price','创客价格：')->rules('required', [
                    'required' => '请输入商品创客价',
                ])->help('选择普通商品类型或不允许复购的商品价格设置成为一样就行，如果是会员专享涉及到复购津贴奖励 就要填写品牌会员价格，并且要比会员价低');
                $form->currency('store_price','瞳小店价格：')->rules('required', [
                    'required' => '请输入商品瞳小店价',
                ])->help('选择普通商品类型或不允许复购的商品价格设置成为一样就行，如果是会员专享涉及到复购津贴奖励 就要填写店铺会员价格，并且要比品牌价低');
                $form->currency('company_price','健康馆价格：')->rules('required', [
                    'required' => '请输入商品健康馆价格',
                ])->help('选择普通商品类型或不允许复购的商品价格设置成为一样就行，如果是会员专享涉及到复购津贴奖励 就要填写公司会员价格，并且要比店铺价低');
                $form->currency('area_price','区县价格：')->rules('required', [
                    'required' => '请输入商品区县代价格',
                ])->help('选择普通商品类型或不允许复购的商品价格设置成为一样就行，如果是会员专享涉及到复购津贴奖励 就要填写店铺会员价格，并且要比品牌价低');
                $form->currency('city_price','市代价格：')->rules('required', [
                    'required' => '请输入商品市代价格',
                ])->help('选择普通商品类型或不允许复购的商品价格设置成为一样就行，如果是会员专享涉及到复购津贴奖励 就要填写公司会员价格，并且要比店铺价低');
                $form->currency('partner_price','合伙人价格：')->rules('required', [
                    'required' => '请输入商品合伙人价格',
                ])->help('选择普通商品类型或不允许复购的商品价格设置成为一样就行，如果是会员专享涉及到复购津贴奖励 就要填写店铺合伙人价格，并且要比公司价低');
            });

            $form->column(6, function (Form $form) {
                $form->editor('content','商品详情：')->rules('required', [
                    'required' => '请输入商品详情',
                ])->height(400);


                $form->multipleImage('goods_img','商品图片：')
                    ->help('上传的第一张图片会作为商品主图')->saving(function ($paths) {
                        // var_dump(implode(',', $paths));
                        // 可以转化为由 , 隔开的字符串格式
                        return implode(',', $paths);
                        //return '1313123';
                        // 也可以转化为json
                        //return json_encode($paths);
                    })->autoUpload()->rules('required', [
                        'required' => '请上传商品图',
                    ]);;
            });
            $form->footer(function ($footer) {
                // 去掉`查看`checkbox
                $footer->disableViewCheck();

                // 去掉`继续编辑`checkbox
                $footer->disableEditingCheck();

                // 去掉`继续创建`checkbox
                $footer->disableCreatingCheck();
                $footer->disableViewCheck();


            });

            $form->disableResetButton();
            $form->width(9, 2);

        });
    }

}
